Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] API GetPrivateProfileString e NullReferenceException
Forum - C# / VB.NET - [VB.NET] API GetPrivateProfileString e NullReferenceException

Avatar
Phil93 (Normal User)
Pro


Messaggi: 85
Iscritto: 26/01/2011

Segnala al moderatore
Postato alle 20:26
Mercoledì, 20/04/2011
Ciao a tutti.
Sto provando a leggere il contenuto di un file INI (scritto precedentemente con la funzione API WritePrivateProfileString). Il problema è che la funzione GetPrivateProfileString mi restituisce 0 e genera una NullReferenceException.

Codice sorgente - presumibilmente VB.NET

  1. Private Declare Auto Function GetPrivateProfileString Lib "kernel32.dll" ( _
  2.             ByVal lpApplicationName As String, _
  3.             ByVal lpKeyName As String, _
  4.             ByVal lpDefault As String, _
  5.             ByVal lpReturnedString As StringBuilder, _
  6.             ByVal nSize As Integer, _
  7.             ByVal lpFileName As String) As Integer
  8.  
  9. Public Function Read(ByVal fileName As String, _
  10.                          ByVal section As String, _
  11.                          ByVal key As String, _
  12.                          Optional ByVal defaultString As String = "", _
  13.                          Optional ByVal raiseError As Boolean = False) As String
  14.  
  15.         Dim Result As New StringBuilder(255)
  16.         Dim ResultLength As Integer
  17.        
  18.         ResultLength = GetPrivateProfileString(section, key, defaultString, Result, Result.Length, fileName)
  19.  
  20.         If ResultLength = 0 AndAlso raiseError Then
  21.             Throw Err.GetException
  22.         End If
  23.  
  24.         Return Result.ToString.Substring(0, ResultLength)
  25. End Function
  26.  
  27. Sub Main()
  28.         Try
  29.             Console.WriteLine(Read("C:\Users\User_2\Desktop\prova.ini", "Sezione1", "Chiave1", "", True))
  30.         Catch ex As Exception
  31.             Console.WriteLine(ex.ToString)
  32.         Finally
  33.             Console.ReadKey()
  34.         End Try
  35. End Sub



Cos'è che genera il problema? Provando con il tipo String invece di StringBuilder funziona, ma vorrei capire perchè con StringBuilder genera errore...
Grazie.

Ultima modifica effettuata da Phil93 il 20/04/2011 alle 20:33
PM